跳到主要内容

通过 HTTP 与 Node-RED 进行配方切换

本教程向您展示如何使用简单的 HTTP 请求远程更改 OV20i 相机中的配方。您将构建一个系统,使网络中的任意设备都能即时在不同的检测设置之间切换——非常适合带有多种产品的生产线。

你将构建的系统: 远程配方切换系统,能够响应来自平板、计算机、PLC,或任何能够发送 Web 请求的设备的 HTTP 指令。

估计时间: 15-20 分钟

难度等级: 初学者

实际示例: 想象一个操作员在平板上扫描条码,摄像机会自动切换到该产品的正确配方——这正是我们要构建的系统!

为什么使用 HTTP 进行配方切换能够简化工作

OV20i 让远程配方切换变得简单:

    • 任意设备都能触发 - 平板、PLC、计算机,甚至智能手机
    • 即时切换 - 配方在不到一秒内切换
    • 无需复杂设置 - 只需在 Node-RED 中放置少量节点
    • 与现有系统兼容 - 与您已拥有的系统集成

非常适合: 多产品生产线、操作员控制面板、自动化系统,或任何需要快速配方切换的场景。

先决条件

在开始之前,请确保您已经具备:

  • OV20i 相机已连接并正常工作
  • 至少创建并准备好 2 个配方
  • 通过 IO Block 访问 Node-RED
备注

你需要 recipe ID 编号——这些编号在编辑配方时浏览器地址栏中可以找到。

Step 1: Find Your Recipe Numbers

1.1 获取 Recipe IDs

  1. 在 Recipe Editor 中打开任意一个配方
  2. 查看浏览器地址栏
  3. 找到 /recipe/ 之后的数字(示例:/recipe/15 表示配方 ID 为 15)
  4. 记录下你想在之间切换的所有配方的 ID

为什么要用这些数字? 每个配方都具有唯一且不变的 ID——摄像机内部就是用这个。

Step 2: Open Node-RED

2.1 访问 Flow Builder

  1. 在任意 Recipe Editor 中,点击“IO Block”
  2. 点击“Configure IO”

现在您已经进入 Node-RED,我们将在这里构建您的配方切换系统!

2.2 规划您的设置

下面是我们要构建的系统:

Button Click → Format Request → Send to Camera → See Result

简单! 摄像机内置的 Web 服务器监听配方切换请求。

Step 3: Build Your Recipe Switcher

3.1 添加基础节点

在画布上拖放以下四个节点:

  1. Inject(来自 Input 部分)- 您的“切换配方”按钮
  2. Function(来自 Function 部分)- 以正确的格式化请求
  3. HTTP Request(来自 Network 部分)- 发送命令到摄像机
  4. Debug(来自 Output 部分)- 显示是否成功

3.2 连接它们

按如下方式连线:

Inject → Function → HTTP Request → Debug

简单! 现在让我们配置每个节点。

Step 4: Configure Your Nodes

4.1 设置配方按钮

  1. 双击 Inject 节点
  2. 将名称改为“Switch to Recipe 15”(使用您实际的配方 ID)
  3. 将 Payload 设置为“15”(您的配方 ID 编号)
  4. 点击“Done”

4.2 设置请求格式化器

  1. 双击 Function 节点
  2. 将名称设为“Format Request”
  3. 复制下面这段简单代码:
// Get recipe number from button
let recipeID = msg.payload;

// Set up the web request
msg.headers = {'Content-Type': 'application/json'};
msg.payload = JSON.stringify({ id: recipeID });

return msg;

  1. 点击“Done”

作用: 将您的配方编号打包成摄像机期望的格式。

4.3 设置 HTTP 请求

  1. 双击 HTTP Request 节点
  2. 将 Method 设置为“POST”
  3. 将 URL 设置为 localhost:5001/pipeline/activate
  4. 命名为 “Change Recipe”
  5. 点击“Done”
备注

在 18.92 版之前:使用 http://[CAMERA_IP]/edge/pipeline/activate
18.92 版及以上:使用 http://localhost:5001/pipeline/activate

4.4 设置响应监控

  1. 双击 Debug 节点
  2. 将名称设为“Recipe Change Result”
  3. 点击“Done”

完美! 您的配方切换器已就绪,可进行测试。

Step 5: Test Your Recipe Switcher

5.1 部署并试用

  1. 点击红色的“Deploy”按钮
  2. 点击您的 Inject 按钮(Switch to Recipe 15)
  3. 观察调试面板的响应

5.2 检查是否成功

成功迹象:

  • 调试显示 "success": true
  • 摄像头界面显示新配方名称
  • 调试面板中无错误信息

如果成功: 恭喜!您已远程切换了配方。
如果没有: 请查看下面的故障排除部分。

5.3 增加更多配方按钮

需要多个配方? 只需再添加更多 Inject 节点:

  • 配方 10 按钮: Payload = "10",Name = "Switch to Recipe 10"
  • 配方 23 按钮: Payload = "23",Name = "Switch to Recipe 23"
  • 全部连接到同一个 Function 节点

Step 6: Use from Other Devices

现在进入有趣的部分! 任何设备都可以通过向摄像机发送 Web 请求来切换配方。

6.1 来自任何网络浏览器

在网络中的任意浏览器输入以下内容:

http://192.168.0.100:5001/pipeline/activate

替换为您的摄像机 IP 地址。

6.2 来自命令行

Windows/Mac/Linux - 将配方切换到 15:

curl -X POST http://192.168.0.100:5001/pipeline/activate \
-H "Content-Type: application/json" \
-d '{"id": "15"}'

6.3 来自 PLC 与其他系统

大多数现代系统都可以发送 HTTP 请求:

  • Siemens PLCs: 使用 HTTP client 块
  • Allen-Bradley: 使用 HTTP 指令块
  • Python/C#/Java: 使用标准 HTTP 库
  • 自定义应用: 任何编程语言均可

请求格式始终相同:

  • 方法(Method): POST
  • URL: http://[CAMERA_IP]:5001/pipeline/activate
  • Body: {"id": "RECIPE_NUMBER"}

Step 7: Make It Even Better

7.1 添加配方验证

是否希望防止切换到不存在的配方? 修改您的 Function 节点:

let recipeID = msg.payload;
let validRecipes = ["10", "15", "20"]; // Your actual recipe IDs

if (!validRecipes.includes(recipeID)) {
msg.payload = "Invalid recipe: " + recipeID;
return null; // Don't send request
}

// Normal formatting continues...

7.2 产品代码映射

是否希望使用产品名称而不是数字? 尝试以下内容:

let productCodes = {
"BOLT_A": "10",
"BOLT_B": "15",
"SCREW_C": "20"
};

let recipeID = productCodes[msg.payload];
// Continue with formatting...

现在您可以使用产品名称来触发,而不是数字!

7.3 响应处理

是否需要更好的成功/错误信息? 在 HTTP Request 之后再添加一个 Function:

let response = JSON.parse(msg.payload);

if (response.success) {
msg.payload = "✓ Recipe changed successfully!";
} else {
msg.payload = "✗ Recipe change failed: " + response.error;
}

return msg;

Step 8: Quick Troubleshooting

不起作用?以下是最常见的修复方法:

问题快速修复
“未找到配方”错误在 URL 中再次检查您的配方 ID 编号
完全无响应验证摄像机 IP 地址和网络连接
“Parse error” 消息检查 Function 节点代码是否正确复制
配方实际没有改变确保配方存在且未损坏
仍然卡住? 请检查摄像机是否在线并且可从 Node-RED 访问。

您完成了!

恭喜! 您现在可以对 OV20i 摄像机进行远程配方控制。只需几次点击,您就构建了一个能够实现以下功能的系统:

  • 从网络中的任意设备实现配方即时切换
  • 与现有系统(如 PLC、平板或计算机)集成
  • 通过简单的按钮点击支持多份配方
  • 对请求进行校验以防止错误
  • 使用标准网络技术与自定义应用程序协同工作

下一步怎么做?

简易下一步

  • 为所有产品添加更多配方按钮
  • 从不同设备(如平板或手机)进行测试
  • 创建自定义产品映射以便更易操作

高级想法

  • 构建带配方选择按钮的操作者仪表板
  • 连接条码扫描仪以实现自动配方选择
  • 与 MES 系统集成以实现生产线协同
  • 添加日志记录以跟踪各配方的使用时机

真实世界的示例

以下是其他场景如何使用 HTTP 配方切换:

  • 食品包装:条码扫描仪触发不同包装尺寸的配方切换
  • 汽车制造:PLC 根据生产线下游的部件类型切换配方
  • 电子行业:带配方按钮的操作员平板用于不同的电路板
  • 质量控制:基于生产计划的自动配方切换

可能性是无穷的——这一切都始于您刚刚构建的这个简单系统!

🔗 参见